<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('error_log', __DIR__ . '/php_errors.log');

try {
    require_once '../includes/functions.php';
    check_login();

    header('Content-Type: application/json');

    // 获取并验证参数
    $template_name = $_GET['template'] ?? '';
    $subdomain = $_GET['subdomain'] ?? '';

    // 至少需要提供一个参数
    if (empty($template_name) && empty($subdomain)) {
        throw new Exception('参数错误：需要提供template或subdomain参数');
    }

    // 根据参数类型确定资源路径
    if (!empty($subdomain)) {
        // 验证子域名格式
        if (!preg_match('/^[a-zA-Z0-9-]+$/', $subdomain)) {
            throw new Exception('无效的子域名');
        }
        
        $resources_path = "../landing_pages/{$subdomain}/resources";
        $resources_file = "{$resources_path}/resources.json";
        // 对于落地页，使用相对于落地页根目录的路径
        $url_prefix = "/landing_pages/{$subdomain}/resources/";
    } else {
        // 验证模板名称格式
        if (!preg_match('/^[a-zA-Z0-9-_]+$/', $template_name)) {
            throw new Exception('无效的模板名称');
        }
        
        $template_path = get_template_path($template_name);
        $resources_path = $template_path . '/resources';
        $resources_file = $resources_path . '/resources.json';
        $url_prefix = "/templates/{$template_name}/resources/";
    }

    // 检查资源目录是否存在
    if (!file_exists($resources_path) || !is_dir($resources_path)) {
        // 如果是落地页且目录不存在，创建目录
        if (!empty($subdomain)) {
            if (!mkdir($resources_path, 0777, true)) {
                throw new Exception('无法创建资源目录');
            }
        } else {
            throw new Exception('资源目录不存在');
        }
    }

    // 如果资源文件不存在，创建一个空的资源文件
    if (!file_exists($resources_file)) {
        file_put_contents($resources_file, json_encode([]));
    }

    // 读取资源信息
    $resources = json_decode(file_get_contents($resources_file), true);
    if (!is_array($resources)) {
        $resources = [];
    }

    // 保存原始资源列表的副本
    $original_resources = $resources;

    // 验证每个资源文件是否存在，如果不存在则从列表中移除
    $resources = array_filter($resources, function($resource) use ($resources_path) {
        return file_exists($resources_path . '/' . $resource['filename']);
    });

    // 将过滤后的资源转换为索引数组
    $cleaned_resources = array_values($resources);

    // 只有当清理后的资源列表与原始列表不同时才写入文件
    if (json_encode($original_resources) !== json_encode($cleaned_resources)) {
        file_put_contents($resources_file, json_encode($cleaned_resources, JSON_PRETTY_PRINT));
    }

    // 为每个资源添加完整的URL和尺寸信息
    foreach ($resources as &$resource) {
        // 获取文件完整路径
        $file_path = $resources_path . '/' . $resource['filename'];
        
        // 保持原有的type字段
        if (!isset($resource['type'])) {
            // 如果没有type字段，根据文件扩展名判断
            $ext = strtolower(pathinfo($resource['filename'], PATHINFO_EXTENSION));
            $resource['type'] = in_array($ext, ['jpg', 'jpeg', 'png', 'gif']) ? 'image' : 
                               (in_array($ext, ['mp4', 'webm']) ? 'video' : 'unknown');
        }
        
        // 添加完整URL
        $resource['url'] = $url_prefix . $resource['filename'];
        
        // 获取资源尺寸信息
        if ($resource['type'] === 'image') {
            // 获取图片尺寸
            if ($size = @getimagesize($file_path)) {
                $resource['dimensions'] = [
                    'width' => $size[0],
                    'height' => $size[1]
                ];
            }
        } elseif ($resource['type'] === 'video') {
            // 如果有缩略图，添加缩略图URL
            if (isset($resource['thumbnail'])) {
                $resource['thumbnailUrl'] = $url_prefix . $resource['thumbnail'];
                // 获取缩略图尺寸作为视频尺寸参考
                $thumb_path = $resources_path . '/' . $resource['thumbnail'];
                if ($size = @getimagesize($thumb_path)) {
                    $resource['dimensions'] = [
                        'width' => $size[0],
                        'height' => $size[1]
                    ];
                }
            }
        }
        
        // 如果获取到了尺寸，添加格式化的尺寸字符串
        if (isset($resource['dimensions'])) {
            $resource['dimensionsText'] = $resource['dimensions']['width'] . 'x' . $resource['dimensions']['height'];
        }
    }

    echo json_encode(array_values($resources));

} catch (Exception $e) {
    error_log("Error in get_resources.php: " . $e->getMessage());
    http_response_code(500);
    echo json_encode([
        'error' => true,
        'message' => $e->getMessage()
    ]);
}
